package com.lm.leetcode.str;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Stack;

/**
 * @Auther: Min.Liu
 * @Description:
 * 给你一个字符串 s ，请你反转字符串中 单词 的顺序。
 * 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。
 * 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。
 *
 * @Date: Created in 19:18 2025/5/8
 */
public class reverseDemo {
    public static void main(String[] args) {
        reverseDemo demo = new reverseDemo();
        String s = "  the sky is   blue  ";
        System.out.println(demo.reverseWords(s));
    }

    public String reverseWords2(String s) {
        s= s.replaceAll(" +"," ").trim();
        String[] strings = s.split(" ");
        StringBuilder sb= new StringBuilder();
        for (int i = strings.length-1; i >= 0; i--) {
            if (i ==0){
                sb.append(strings[i]);
            }else {
                sb.append(strings[i]).append(" ");
            }
        }
        return sb.toString();
    }

    public String reverseWords3(String s) {
        s= s.replaceAll(" +"," ").trim();
        int len = s.length();
        StringBuilder sb= new StringBuilder();
        while (len-- > 0) {
            //拿到最后一个位置的空格
            if (s.charAt(len) == ' ') {
                String word = s.substring(len + 1);
                //递归拼接
                return word + " " + reverseWords(s.substring(0, len));
            }
        }
        return s;
    }
    public String reverseWords(String s) {
        // 设置一个栈存放单词
        Stack<String> stack = new Stack<>();
        s= s.replaceAll(" +"," ").trim();
        String[] wordArray = s.split(" ");
        for (String word : wordArray) {
                stack.push(word);
        }
        StringBuffer stringBuffer = new StringBuffer();
        while (!stack.isEmpty()) {
            stringBuffer.append(stack.pop()).append(" ");
        }
        return stringBuffer.toString().trim();
    }



}
